S3 Pre-Signed URLを生成するだけのGemを書きました
S3にはPre-Signed URLという機能があり、S3に置いたバケットに対して事前にシグネチャを発行することでプライベートなコンテンツを共有するためのURLを生成することができます。
大変便利な機能ですが、作成するためにはプログラムを都度作る必要があるのは少し面倒です。なのでコマンドラインから生成できるようにしたいと思いPresignerというGemを書き、リリースしました。
使い方
Gemをインストールするだけで動きます。
$ gem install presigner
使い方は以下のとおりです。
$ presigner generate --bucket bucketname --key tmptxt --duration 3600
--bucketと--keyオプションでバケット名とバケット内のオブジェクトパスを記載します。--durationでURLの有効期限を指定します。単位は秒です。
上記コマンドを実行すると以下のようになります。
$ presigner generate --bucket mochizuki-testbucket --key tmp.txt --duration 60 https://mochizuki-testbucket.s3-ap-northeast-1.amazonaws.com/tmp.txt
生成されたURLにブラウザからアクセスすると、内容が確認できます。上記例では60秒間(=1分)だけ有効なURLが発行されます。
有効期限が切れたURLにアクセスすると、下のようなエラー画面が表示されます。
まとめ
Pre-Signed URLは様々な用途がありますが、プライベートなコンテンツの共有などに使うこともできます。例えばメールに添付できないような大容量のファイルをアップロードしてPre-Signed URLを発行することでファイル便のように使うこともできます。
Presigner自体の機能はまだまだ全然足りないので、今後アップデートしていきます。